/**
 * 剪切板
 * @example
 * const {setClipboardData, getClipboardData} = useClipboard()
 * // 设置剪切板
 * setClipboardData({data: '1234567890'})
 * // 获取剪切板
 * const data = await getClipboardData()
 */
export default function useClipboard() {
  const setClipboardData = ({ data, showToast = true }: UniApp.SetClipboardDataOptions) => {
    return new Promise<string>((resolve, reject) => {
      // uni 是 UniApp 框架提供的全局对象，包含了许多用于跨平台开发的 API。它类似于 window 或 wx 对象，专门用于处理与平台相关的功能。
      // uni.setClipboardData 是一个 UniApp 的方法，用于将指定内容写入剪切板。
      uni.setClipboardData({
        data,
        showToast,
        success: ({ data }) => resolve(data),
        fail: error => reject(error),
      });
    });
  };
  const getClipboardData = () => {
    return new Promise<string>((resolve, reject) => {
      uni.getClipboardData({
        success: ({ data }) => resolve(data),
        fail: error => reject(error),
      });
    });
  };
  return {
    setClipboardData,
    getClipboardData,
  };
}
// 如果不封装：
// 1、代码冗长，不简洁
// 2、每次都需要设置成功和失败后的回调函数
// 3、不够模块化
